package com.yserp.project.erp.common.util;/**
 * Created with IDEA
 * author:Carl
 * Date:2022/8/17
 * Time:11:22
 */

import com.yserp.project.erp.common.anno.MybatisNullSearch;
import com.yserp.project.erp.store.stock.domain.Stock;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.util.Map;

/**
 * @author carl
 * @date 2022年08月17日 11:22
 */
public class MybatisPlusHandler {


    //类中注解设置
    private void mybatisNullSearchHandler(){
        try{

            //获取类的属性字段
            Field field = Stock.class.getDeclaredField("batchNo");
            //获取val字段上的Foo注解实例
            MybatisNullSearch annotation = field.getAnnotation(MybatisNullSearch.class);
            //获取 foo 这个代理实例所持有的 InvocationHandler
            InvocationHandler handler = Proxy.getInvocationHandler(annotation);
            // 获取 AnnotationInvocationHandler 的 memberValues 字段
            Field hField = handler.getClass().getDeclaredField("memberValues");
            // 因为这个字段事 private final 修饰，所以要打开权限
            hField.setAccessible(true);
            // 获取 memberValues
            Map memberValues = (Map) hField.get(handler);
            // 修改 value 属性值
            memberValues.put("open", true);

        }catch (Exception e){
            System.out.println("设置属性失败");
        }


    }
}
